1. Field of the Invention
The present invention relates generally to the data processing field and, more particularly, to a computer implemented method, system and computer usable program code for processing a data request in a data processing system that includes an on-chip bus system that interconnects one or more processors and has separate read and write data busses, and wherein the processors and the bus system have an intervention capability.
2. Description of the Related Art
Exemplary embodiments are directed to data processing systems that include on-chip bus systems that interconnect one or more hardware coherent processors. (The term “processor” as used herein generally refers to a processor and one or more caches that are associated with the processor). Exemplary embodiments are also directed to data processing systems that include on-chip bus systems that have separate read and write data busses, and to processors and busses that have an intervention capability. “Intervention”, as used herein, relates to a mechanism by which a master device, for example, a processor or an input/output (I/O) master device, makes a read request to a slave device, for example, a memory such as a main memory, but the requested data is locally held by a cache (typically a cache associated with a processor); and the cache provides the data instead of the slave device. In such a situation, the cache provides “intervention data” when a snooping process, which occurs among all snoopers (processors) and a bus controller, determines that read data can and should be provided from the cache rather than from a slave device.
In a data processing system, a processor typically sends outgoing data, including castout data (cached data that has been written or modified by the processor and is subsequently being written to memory), to the processor's write data bus. For intervention, however, the outgoing data must eventually reach the read bus of the master requesting the data. In a known system, snoop-pushes (cache line pushes generated in response to snoops) were sent out a processor's write data bus, and a buffer in a bus controller was used to capture the data from the write data bus and send the data to the requesting master's read data bus. The buffer was needed, rather than just using routing logic (mux), because the read and write data busses operate independently. Using a buffer for such a purpose, however, is complex, adds area and power requirements, and increases latency.
There is, accordingly, a need for an improved mechanism for processing a data request in a data processing system that includes an on-chip bus system that interconnects one or more processors and has separate read and write data busses, and wherein the processors and the bus system have an intervention capability.